package org.gestorTareas.actions;

import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.gestorTareas.model.dao.UsuarioDao;
import org.gestorTareas.model.dto.Usuario;
import org.gestorTareas.utils.IConstants;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.validator.annotations.Validation;

@Validation
public class LoginAction extends ActionSupport implements ModelDriven<Usuario>{

	private Usuario usuario = new Usuario();
	
	private static Logger logger = Logger.getLogger(LoginAction.class);
	
	public String login(){

		try{
			WebApplicationContext context =
					WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
		    
		    UsuarioDao servicio = (UsuarioDao) context.getBean("UsuarioDao");
		    
		    Usuario usuarioRegistrado = servicio.getUsuarioByLoginDto(usuario);
		    
	    	if (usuarioRegistrado != null) {
		    	Map session =  ActionContext.getContext().getSession();
		        session.put(IConstants.USER_SESSION, usuarioRegistrado);
		        	        
		        return SUCCESS;
		    } else {
		    	return ERROR;
		    }
		} catch(Exception ex){
			logger.error(ex);
			addActionError(getText("mensaje.error.general"));
			return ERROR;
		}
	    
	}
	
	
	public Usuario getUsuario() {
		return usuario;
	}


	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}


	public Usuario getModel(){
		return usuario;
	}
}